interface Memory {
    colony: Record<string, ColonyMemory>;
    lastCreepNum?: number;
    spawnCounter?: number;
    totalCreepCounter?: number;
    botBirthTick?: number;
}

type ColonyOperatingMode =
    'normal' |     // 普通
    'econo' |      // 经济，节约资源，减少能量消耗
    'upgrade';     // 冲级，特殊的房间布局，冲 GPL

interface ColonyMemory {
    operatingMode?: ColonyOperatingMode;
    outpostNames?: string[];
    originalLevel: number;
}

interface CreepMemory {
    /**
     * 指明是哪个殖民地生的爬。如果是其他殖民地支援生的爬，这个字段需要手动指定
     */
    home?: string;
    /**
     * Creep 的角色
     */
    role?: CreepRole;
    /**
     * 大部分 Creep 都有工作的对象，这个字段指明对象的 id
     */
    target?: Id<CreepTargettableObject>;
    /** 
     * 如果设置为 true，那么快死亡时不应发布 spawn 请求。这只是一个指示字段。
     */
    temporary?: boolean;
    /**
     * 用于自动 respawn，切记有特殊接班实现的需要手动设置为 true！仅对
     * `NormalColony` 有效
     */
    hasRequestedSuccessor?: boolean;
    onBorn?: boolean;
}

interface Game {
    hasCreepNumChanged?: boolean;
}